package br.com.monise.dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import br.com.monise.model.Caracteristicas;
import br.com.monise.model.CaracteristicasUsuario;
import br.com.monise.model.Usuario;
import br.com.monise.util.GenericDao;

public class CaracteristicasUsuarioDao extends GenericDao<CaracteristicasUsuario>{
	
	public List<CaracteristicasUsuario> getCaracteristicas(Usuario usuario){
		EntityManager manager = getEntityManager();
		
		manager.getTransaction().begin();
        Query query = manager.createQuery("SELECT a from CaracteristicasUsuario a where a.usuario.pkUsuario=:usuario");
		query.setParameter("usuario",usuario.getPkUsuario());

		@SuppressWarnings("unchecked")
		List<CaracteristicasUsuario> caracteristicas = query.getResultList();

		manager.getTransaction().commit();
	//	manager.close();

		return caracteristicas;
	}
	
	public CaracteristicasUsuario getCaracteristicasUsuario(Caracteristicas caracteristica){
		EntityManager manager = getEntityManager();
		
		manager.getTransaction().begin();
        Query query = manager.createQuery("SELECT a from CaracteristicasUsuario a where a.pkCaracteristica=:caracteristica");
		query.setParameter("caracteristica",caracteristica.getPkCaracteristicas());

		CaracteristicasUsuario caracteristicaUsuario = (CaracteristicasUsuario) query.getSingleResult();

		manager.getTransaction().commit();
		//manager.close();

		return caracteristicaUsuario;
	}
	
	public List<CaracteristicasUsuario> getCaracteristicasUsuario(Usuario usuario){
		EntityManager manager = getEntityManager();
		
		manager.getTransaction().begin();
        Query query = manager.createQuery("SELECT a from CaracteristicasUsuario a where a.usuario.pkUsuario=:usuario");
		query.setParameter("usuario",usuario.getPkUsuario());

		@SuppressWarnings("unchecked")
		List<CaracteristicasUsuario> caracteristicas =  query.getResultList();

		manager.getTransaction().commit();
	//	manager.close();

		return caracteristicas;
	}
	
	public CaracteristicasUsuario getCaracteristicasUsuario(Caracteristicas caracteristica,Usuario usuario ){
		EntityManager manager = getEntityManager();
		
		manager.getTransaction().begin();
        Query query = manager.createQuery("SELECT a from CaracteristicasUsuario a where a.caracteristicas.pkCaracteristicas=:caracteristica and a.usuario.pkUsuario=:usuario");
		query.setParameter("caracteristica",caracteristica.getPkCaracteristicas());
		query.setParameter("usuario",usuario.getPkUsuario());

		CaracteristicasUsuario caracteristicaUsuario = (CaracteristicasUsuario) query.getSingleResult();

		manager.getTransaction().commit();
		//manager.close();

		return caracteristicaUsuario;
	}

}
